/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package algoritmo;

import java.util.Comparator;
import java.util.PriorityQueue;

/**
 *
 * @author JULIAN
 */
public class UniformCostSearch extends AbstractSearch {

    /*Agenda es una cola de prioridad ordenada por el costo del camino del nodo*/
    private PriorityQueue<Node> agenda;

    public UniformCostSearch() {
        agenda = new PriorityQueue<>(11, getComparator());
    }

    public Comparator getComparator() {
        return new Comparator<Node>() {

            @Override
            public int compare(Node o1, Node o2) {
                if (o1.getPathCost() == o2.getPathCost()) {
                    return 0;
                } else if (o1.getPathCost() < o2.getPathCost()) {
                    return -1;
                } else {
                    return 1;
                }
            }
        };
    
    }

    @Override
    public Node agendaNextState() {
        return agenda.poll();
    }

    @Override
    public void agendaAdd(Node n) {
        agenda.add(n);
    }
}
